//#include "Queue.h"
//
//void QInit(Queue* pq)
//{
//	assert(pq);
//	pq->phead = pq->ptail = NULL;
//	pq->size = 0;
//}
//
//
//void QPush(Queue* pq, QDataType x)
//{
//	assert(pq);
//	QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode));
//	if (newnode == NULL)
//	{
//		perror("malloc");
//		exit(1);
//	}
//	newnode->data = x;
//	newnode->next = NULL;
//	if (pq->phead == NULL)
//	{
//		pq->phead = pq->ptail = newnode;
//	}
//	else
//	{
//		pq->ptail->next = newnode;
//		pq->ptail = pq->ptail->next;
//	}
//	pq->size++;
//}
//
//int QueueEmpty(Queue* pq)
//{
//	return pq->phead == NULL;
//}
//
//QDataType QueueFront(Queue* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	return pq->phead->data;
//}
//
//QDataType QueueBack(Queue* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	return pq->ptail->data;
//}
//
//void QueuePop(Queue* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	if (pq->phead == pq->ptail)
//	{
//		free(pq->phead);
//		pq->phead = pq->ptail = NULL;
//	}
//	else
//	{
//		QueueNode* next = pq->phead->next;
//		free(pq->phead);
//		pq->phead = next;
//	}
//	pq->size--;
//}
//
//void QueueDstroy(Queue* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	QueueNode* pcur = pq->phead->next;
//	while (pcur)
//	{
//		QueueNode* next = pcur->next;
//		free(pcur);
//		pcur = next;
//	}
//	pq->phead = pq->ptail = NULL;
//	pq->size = 0;
//}
//
//int QueueSize(Queue* pq)
//{
//	assert(pq);
//	return pq->size;
//}